# 2025.06.27力扣网刷题
# 数组中的字符串匹配——数组、字符串、字符串匹配——简单
# 给你一个字符串数组 words ，数组中的每个字符串都可以看作是一个单词。请你按 任意 顺序返回 words 中是其他单词的 子字符串 的所有单词。
# 示例 1：
# 输入：words = ["mass", "as", "hero", "superhero"]
# 输出：["as", "hero"]
# 解释："as" 是 "mass" 的子字符串，"hero" 是 "superhero" 的子字符串。
# ["hero", "as"] 也是有效的答案。
# 示例 2：
# 输入：words = ["leetcode", "et", "code"]
# 输出：["et", "code"]
# 解释："et" 和 "code" 都是 "leetcode" 的子字符串。
# 示例 3：
# 输入：words = ["blue", "green", "bu"]
# 输出：[]
# 提示：
# 1 <= words.length <= 100
# 1 <= words[i].length <= 30
# words[i] 仅包含小写英文字母。
# 题目数据 保证 words 的每个字符串都是独一无二的。

class Solution(object):
    def stringMatching(self, words):
        """
        :type words: List[str]
        :rtype: List[str]
        """
        words.sort(key=lambda x: len(x), reverse=True)
        res = []
        length = len(words)
        for i in range(length):
            for j in range(i + 1, length):
                if words[i].find(words[j]) != -1:
                    if words[j] not in res:
                        res.append(words[j])
        return res

if __name__ == '__main__':
    words = ["mass", "as", "hero", "superhero"]
    print(Solution().stringMatching(words))
